04. 将更改推送到远程仓库

L1 - Git Push 理论

查看 commit

让我们来看看我的仓库中的 commit 。

_终端正在显示项目 commit 的日志。_

终端正在显示项目 commit 的日志。

我使用了以下 log 命令来显示这些 commit

$ git log --oneline --graph --decorate --all

不过这些 commit 仅位于本地仓库,还未推送到远程仓库。当 commit 推送到远程仓库后,日志中将出现远程分支指示符。由于日志中当前没有远程分支指示符,我们便可以说远程仓库中没有 commit 。但是为了百分百确定,我们来看看 GitHub 上的远程仓库,看看是否存在一些 commit 。

_远程仓库不包含任何 commit ,所以 GitHub 显示出仓库的设置页面。_

远程仓库不包含任何 commit ,所以 GitHub 显示出仓库的设置页面。

由于我们还未向 GitHub 推送任何 commit 更新,它仍然在向我们显示设置屏幕,告诉我们如何将本地仓库连接到远程仓库并推送一些 commit 。由于我们看到的仍然是设置屏幕,因此可以知道远程仓库中没有 commit 。

推送 commits

要将本地 commits 推送到远程仓库,你需要使用 git push 命令。你要提供远程仓库简写名以及用于容纳你的 commit 的分支名:

$ git push <remote-shortname> <branch>

我的远程仓库的简写名为 origin ,并且我想推送的 commit 位于 master 分支上。那么,我要使用以下命令将我的 commit 推送到 GitHub 上的远程仓库:

$ git push origin master

_终端现在正在显示 `git push` 命令。它向我索取用户名、密码(不显示出来),然后显示关于它如何推送 commit 的信息。_

终端现在正在显示 git push 命令。它向我索取用户名、密码(不显示出来),然后显示关于它如何推送 commit 的信息。

有几点需要注意:

  • 你可能需要输入用户名和密码,这取决于你如何配置 GitHub 的以及使用的远程 URL 。
    • 如果你使用的是 HTTP 版本(而不是 ssh 版本)的远程仓库,就需要提供用户名和密码。
    • 如果你配置 GitHub 使用 SSH 协议,并提供过 SSH 密匙,就不需要执行上一步。如果你对使用 SSH 连接 GitHub 感兴趣,请参阅 使用 SSH 连接 GitHub 文档
  • 如果你要输入用户名和密码,用户名会在输入后显示出来,但密码不会显示。只需继续输入密码,完成后按 Enter 键即可。
    • 如果你的密码出错,不用担心,它会让你重新输入
  • Git 会压缩文件使之变小,然后将其推送至远程仓库
  • 这里创建了一个新分支,在页面底部可看到 [new branch] ,后面是 master -> master

现在我们来看 GitHub:

_我的整个项目都位于 GitHub 上!_

我的整个项目都位于 GitHub 上!

我们的项目位于 GitHub 上 - 这太酷了,也让我们的工作变得很轻松!GitHub 有一个很棒的功能,即它会自动显示 README 文件的内容,这非常有用。

GitHub 还会显示很多关于我们仓库的详细信息。现在它显示仓库中有:

  • 三个 commit
  • 一个分支
  • 一名贡献者

_ GitHub 上的项目主页显示关于仓库的信息。_

_ GitHub 上的项目主页显示关于仓库的信息。_

在继续之前,我们来检查一下本地仓库,看看在推送更改后它有何变化。

运行以下命令:

$ git log --oneline --graph --decorate --all

注意:确认已包含 --decorate --all 选项。

_终端显示运行 `git log --oneline --graph --decorate --all` 后的结果。现在出现了 `origin/master` 跟踪分支。_

终端显示运行 git log --oneline --graph --decorate --all 后的结果。现在出现了 origin/master 跟踪分支。

现在我们输出中有一个标记 (marker)!该标记为 origin/master ,并被称为 跟踪分支 。跟踪分支的名称包含远程仓库的简写名及分支名称。所以跟踪分支 origin/master 告诉我们远程仓库 origin 有一个 master 分支,指向 commit 9b7d28f (并包含 9b7d28f 前的所有 commit )。这非常有用,因为这意味着我们可以在本地仓库跟踪远程仓库的信息!

需要 注意的一点 是,这个 origin/master 跟踪分支并不能实时表现被跟踪分支在远程仓库上的位置。如果我们之外的其他人对远程仓库做了更改,我们本地仓库中的 origin/master 跟踪分支不会移动。我们必须告诉它检查更新, 它才会 移动。我们将在下一部分介绍如何操作。

小结

git push 命令用于从本地仓库向远程仓库推送 commit 。

$ git push origin master

git push 命令需要:

  • 你想向其推送 commit 的远程仓库的简写名
  • 包含你想推送的 commit 的分支